A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
The present invention generally relates to the field of managing the development and release of software programs and more particularly to a change control mechanism for selectively releasing changes to software programs.
Version control, also known as source code control or revision control, is a component of configuration management. The objective behind version control is to enable a particular xe2x80x9csnapshotxe2x80x9d of a development process to be recovered at some stage in the future (i.e. after the development has moved on from the snapshot time). Without version control a project can encounter the following difficulties:
After a software release is made and shipped to a customer a new software release is made, theoretically providing enhancements or fixing bugs. The customer later complains that the new release has one particular bug that prevents the software from being usable, and the customer wants to xe2x80x9croll-backxe2x80x9d to the previous release until this bug is fixed. Without version control, there is no roll-back mechanism.
While a software developer is making a change to a source code file, a serious mistake is made, and the developer needs to recover the file to the point before the change was made. Without version control, there is no recovery mechanism.
After new software release is made and shipped to a customer, they wish to be given a list of changes that have been made to the software since the previous release. No change control mechanism is available without version control.
Prior art in this area focuses on releasing software as a collection of file versions that incorporate all the changes that were made since the previous release. A change may represent features that have been added, deleted or modified since the last release. Since there was no method for distinguishing one change from another within a file version, there is no way for selectively releasing changes. Thus, the prior art suffers from inflexibility when it comes to classifying a software release as a set of select changes, where each change represents a feature of the software release.
An object of the present invention is to provide a method for selectively releasing changes as a part of a software release.
Another object of the present invention is provide a method for storing versions as changes to files, which eliminates the need to store entire files of new versions resulting in a savings of storage.
These and other objects, which will become apparent as the invention is described in detail below, are provided by a method in a computer system capable of executing a version control program, wherein the method operates within the version control program for incorporating changes to software releases. The method creates a project archive object that manages all resources for each of the software releases and then creates a branch in the project archive object in order to establish a new project revision object of the project archive objects. Next, a project revision object is established and is disposed on the branch for incorporating a revision of the project archive object. After this, archive objects are added to the project revision object and revisions are received from a user to each of the archive objects. A change object is established for the project revision, which logically groups a set of revisions to be released. A stream is then created from the project revision object in order to establish a new project revision object of the project archive object, thereby establishing the new project revision object as a software release object. The software release object is then disposed on the stream for incorporating a revision of the project archive object. Finally, the change object is applied to the software release object after it is determined that a change is ready for release.
Still other objects, features and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein is shown and described only the preferred embodiment of the invention, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive, and what is intended to be protected by Letters Patent is set forth in the appended claims. The present invention will become apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of this application.